package E_2024;

import java.util.*;

/*
题目描述
    小明负责公司年会，想出一个趣味游戏:
    屏幕给出 1−9 中任意 4 个不重复的数字,大家以最快时间给出这几个数字可拼成的数字从小到大排列位于第 n 位置的数字,其中 n 为给出数字中最大的(如果不到这么多数字则给出最后一个即可).
    注意：
    2 可以当作 5 来使用，5 也可以当作 2 来使用进行数字拼接，且屏幕不能同时给出 2 和 5；
    6 可以当作 9 来使用，9 也可以当作 6 来使用进行数字拼接，且屏幕不能同时给出 6 和 9。
    给出的数字：1, 4, 8, 7 则可以拼接的数字为： 1, 4, 7, 8, 14, 17, 18, 41, 47, 48, 71, 74, 78, 81, 84, 87, 147, 148, 178...（省略后面的数字） 因此，第 n（即8）个数字为 41。
输入描述
    输入以逗号分隔的 4 个 int 类型整数的字符串。
输出描述
    输出为这几个数字可拼成的数字从小大大排列位于第 n (n为输入数字中最大的数字) 位置的数字,如果输入的数字不在范围内或者有重复，则输出 −1。
示例1
    输入：
    1,4,8,7
    输出：
    41
    说明：
    可以构成的数字按从小到大排序为：
    1, 4, 7, 8, 14,17,18,41,47, 48, 71, 74, 78, 81, 84, 87, 147, 148,178...（省略后面的数字）故第 8 个数字为 41。
示例2
    输入：
    2,5,1,4
    输出：
    -1
    说明：
    2 和 5 不能同时出现。
示例3
    输入：
    3,0,9,1
    输出：
    -1
    说明：
    0 不在 1 到 9 的范围内。
 */
public class E_200_19 {
    public static void main(String[] args) {
        System.out.println(ans(new int[]{1, 4, 8, 7}));
        System.out.println(ans(new int[]{1, 5, 8, 7}));
        System.out.println(ans(new int[]{1, 5, 2, 7}));
    }
    public static int ans(int[] arr){
        int two = 0;
        int six = 0;
        Arrays.sort(arr);
        List<Integer> list = new ArrayList<>();
        for (int i : arr) {
            if (i <= 0) return -1;
            if (i > 9) return -1;
            if (two >= 2) return -1;
            if (six >= 2) return -1;
            if (i == 2 || i == 5) {
                two++;
                list.add(2);
                list.add(5);
            }else if (i == 6 || i == 9) {
                six++;
                list.add(6);
                list.add(9);
            }else
                list.add(i);
        }
        for (int x : arr) {
            for (int y : arr) {
                if (x != y && x*y != 10 && x*y != 54){
                    list.add(x * 10 + y);
                }
            }
        }
        // 迷惑点，数组中最大值为9，因此最大也只需要寻找第9个组合数，只需要考虑一位数和两位数的组合，
        Collections.sort(list);
        return list.get(arr[arr.length - 1]-1);
    }
}
